import java.util.Scanner;

/**
 * 模拟收音机播放音乐
 *      收音机类
 *          属性：电池、开关的状态
 *          行为：开机/关机、放电池、更换电池、播放音乐
 */
public class Radio {

    Scanner scanner = new Scanner(System.in);

    /**
     * 引用数据类型，如果没有赋值，默认值是null
     */
    public Battery battery;

    /**
     * 开关状态：
     *      true --> 开机
     *      false --> 关机
     */
    boolean isOn;

    /**
     * 开关机
     * @param isOn
     */
    public void turnOn(boolean isOn){
        /*
            这里的this表示的是，当前类，this --> Radio对象
            this.isOn --> Radio对象中的属性的调用
            = isOn --> 是形参的值
         */
        this.isOn = isOn;
    }

    /**
     * 放电池
     */
    public void putBattery(){

        System.out.println("请选择一个型号：#1 #5 #7");


        if(!"#5".equals(scanner.next())){
            System.out.println("很抱歉，收音机只能放5号电池！");
        }else{
            //创建的对象
            Battery battery = new Battery();
            battery.type = "#5";
            replaceBattery(battery);
        }
    }

    /**
     * 更换电池
     */
    public void replaceBattery(Battery battery){
        this.battery = battery;
    }

    /**
     * 判断是否装了电池？是否开了开关？电池是否有电?
     *  -->播放音乐，每播放一首音乐，消耗一格电量，
     *     每首播放完后，提示是否继续播放；
     *     如果说播放完了，电量不足的时候，提示（1、充电2、换电池、3、关机)
     */
    public void play(){

        //1.判断是否安装了电池
        if(battery == null){
            System.out.println("还没有放电池");

            System.out.println("是否需要放电池？y --- 是；其他表示退出");
            String choose = scanner.next();

            if("y".equals(choose)){
                putBattery();
                play();
            }else {
                exit();
            }
        }
        //2.收音机是否打开了
        if(!isOn){
            System.out.println("是否要开机？y -- 是；其他--退出");
            String choose = scanner.next();

            if("y".equals(choose)){
                turnOn(true);
            }else{
                exit();
            }
        }

        //电池是否有电?
        if(battery.power <= 0){
            menu();
        }else{
            System.out.println("是否继续播放？y ---是；其他--退出");
            if("y".equals(scanner.next())){
                playMusic();
            }else{
                exit();
            }
        }

    }

    /**
     * 电量不足，则需要的操作
     */
    public void menu(){
        System.out.println("电量不足：1、充电\t2、换电池\t3、关机");
        switch (scanner.next()){
            case "1":
                battery.charge();
                break;
            case "2":
                putBattery();
                break;
            case "3":
                exit();
                break;
            default:
                System.out.println("请输入有误，请重新输入！");
                menu();
        }
    }
    //退出
    public void exit(){
        System.exit(0);
    }

    public void playMusic(){
        System.out.println("正在播放音乐，当前电量="+battery.power);

        //播放音乐的时候，会耗电
        battery.consume();
    }

    public static void main(String[] args) {

        Radio radio = new Radio();
        radio.play();
    }
}
